perm filename SEC.SAI[NET,KMC] blob sn#165199 filedate 1975-06-21 generic text, type T, neo UTF8
BEGIN
DEFINE  TAB="'11", LF="'12", FORM="'14", CR="'15", 
 	ALT="'33", DEL="'177", ↓=" &'15&'12 ", CREEP="(CR&DEL&'21)";

DEFINE  TIL="STEP 1 UNTIL", LN="LENGTH",
	SAY="OUTSTR",PROC="PROCEDURE";

INTEGER INCH,OUCH,CNT,BRK,EOF,FLAG;	COMMENT INPUT/OUTPUT GLOBALS;

DEFINE DSKI="OPEN(INCH←GETCHAN,""DSK"",1,4,0,CNT←200,BRK,EOF)",
	BDSKI="OPEN(INCH←GETCHAN,""DSK"",8,40,0,CNT←200,BRK,EOF)",
	DSKO="OPEN(OUCH←GETCHAN,""DSK"",1,0,4,0,0,0)",
	BDSKO="OPEN(OUCH←GETCHAN,""DSK"",8,0,40,0,0,0)",
	FILI(FILE)="LOOKUP(INCH,FILE,FLAG)",
	FILO(FILE)="ENTER(OUCH,FILE,FLAG)",
	LPTO="OPEN(OUCH←GETCHAN,""LPT"",1,0,2,0,0,EOF←0)",
	TTYI="OPEN(INCH←GETCHAN,""TTY"",1,2,0,CNT←200,BRK,EOF)",
	TTYO="OPEN(OUCH←GETCHAN,""TTY"",1,0,2,0,0,0)";

PROC FILIN(STRING F);  BEGIN  DSKI; FILI(F) END;

PROC FILOUT(STRING F);  BEGIN DSKO; FILO(F) END;

PROC FILOUTP(STRING F;INTEGER P);  BEGIN DSKO; FILO(F); RENAME(OUCH,F,P,FLAG) END;

PROC BFILIN(STRING F);  BEGIN  BDSKI; FILI(F) END;

PROC BFILOUT(STRING F);  BEGIN BDSKO; FILO(F) END;


STRING BLANKS;
DEFINE	INLINE="INPUT(INCH,1)",  TOTAB(S)="SCAN(S,13,BRK)";

STRING PROC LEFT(INTEGER L; STRING S);
	RETURN(IF LN(S)<L THEN S&BLANKS[1 TO L-LN(S)] ELSE S[1 TO L]);

STRING PROC RIGHT(INTEGER L; STRING S);
	RETURN(IF LN(S)<L THEN BLANKS[1 TO L-LN(S)]&S  ELSE S[LN(S)-L+1 TO LN(S)]);

STRING PROC CENTER(INTEGER L; STRING S);
	RETURN(IF LN(S)<L THEN BLANKS[1 TO (L-LN(S))DIV 2]&
		S & BLANKS[1 TO (L-LN(S)+1)DIV 2] ELSE S[1 TO L]);

STRING PROC ASK(STRING S);
	BEGIN  OUTSTR(S);  RETURN(INCHWL)  END;

INTEGER PROC ROUND(REAL R);  RETURN(R + .5);



DEFINE ITT(X,N) = "FOR X←1 STEP 1 UNTIL N DO";
DEFINE ∂=" &BLANK1& ";
STRING BLANK1,BLANK10,BLANK20,DELIMSS,FORMFEED;


INTEGER DICE, SW, P, P1, Q, Q1, I, I1, J, J1, K, K1, W, L, T, WFLAG;
INTEGER NEXTL,NEXTA,LI,SSLEN,ATLEN,ERROR,IDUM,INCH1,INCH2,EOF1,EOF2;
REAL R, RR, RRR;
STRING S, SS, SSS,ST,SY,SV,FILENAME,SU,LASTNAME,LASTLINE,ZEROKS,TOPIC,LASTB,AREA;
STRING S1,S2;
PRELOAD_WITH [11] 0;
INTEGER ARRAY AA[1:11];
STRING  ARRAY SA[1:15];
INTEGER ARRAY DUMMAA[1:6,1:3];

BOOLEAN PROC EQS(STRING S);	
	RETURN(IF EQU(S,NULL) OR EQU(S," ") THEN TRUE ELSE FALSE);


PROC OUTB(INTEGER CHAN; STRING S);
  BEGIN IF ¬EQU(SV,S[1 TO 6]) THEN BEGIN OUT(OUCH, NULL ↓ ); SV←S[1 TO 6]; END;
  OUT(OUCH, S);  END;


FORMFEED← '14;
ZEROKS←"000000000000";
BLANKS←"                                                   ";
BLANK1←"   ";
BLANK20←"                    ";
BLANK10←"          ";
FLAG←0;
DELIMSS← '15 & '12 & '40 & '11 & '14;
SETBREAK(1, '12, '15 & '14, "INS");
SETBREAK(13, '12 & '40, '15, "INS");
SETBREAK(14,DELIMSS & " ?.()","","INR");
SETBREAK(15,"αλ","","INR");

COMMENT  BREAKSETS 17 AND 18 ARE RESERVED FOR TEMPORARY USE;

SW←0; J←0;
ITT(I,6) ITT(K,3) DUMMAA[I,K]←0;
ITT(I,5) SA[I]←" ";

COMMENT ********************************* ;

WHILE TRUE DO  BEGIN	"TOPBLOCK"

S←ASK("H FOR HELP -- GO?");

IF EQU(S, "X") THEN DONE "TOPBLOCK";

IF EQU(S, "H") THEN BEGIN

SAY("D for deleting DIA files from DIA,KMC   " ↓ );
SAY("P for going thru DIA files  " ↓ );
SAY("T for testing something" ↓ ↓ );

END;  COMMENT END OF H ROUTINE;

COMMENT  D ROUTINE FOR DELETING DIA FILES;

IF EQU(S,"D") THEN BEGIN "D"

SAY("Here we go deleting DIA files on FAUGHT  " ↓ );
FILIN("PAR2.FIL");
SS←INPUT(INCH,1);  IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
W←CVD(SS); RELEASE(INCH);
SAY("top number = " & CVS(W) ↓ );

COMMENT * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;

SS←ASK("WANT TO DELETE DIA FILES [Y,N]? ");
IF EQU(SS,"Y") THEN BEGIN "DEL"

SS←ASK("DELETE TO WHAT NUMBER [T FOR THRU.FIL]? ");  
IF EQU(SS,"T") THEN  BEGIN
	FILIN("THRU.FIL");
	SS←INPUT(INCH,1);  IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
	W←CVD(SS); RELEASE(INCH);  END
ELSE W←CVD(SS);
SAY("top number = " & CVS(W) ↓ );

FILIN("DEL.FIL");
SS←INPUT(INCH,1);  IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
J←CVD(SS); RELEASE(INCH);
SAY("bottom number = " & CVS(J) ↓ );

WHILE J≠W DO  BEGIN "READDIA"

J←J+1;
SS←"P"&CVS(J)&".DIA";   COMMENT SAY("reading from "& SS ↓ );
FLAG←0;	FILIN(SS);	I←FLAG;
IF I≠0 THEN  SAY(SS& " doesnt exist" ↓ )
	ELSE BEGIN SAY("del "&SS ↓ ); IDUM←0;  RENAME(INCH,NULL,0,IDUM);
	IF IDUM THEN SAY("DELETE FAILED!!" ↓ );  END;
RELEASE(INCH);

SS←"P"&CVS(J)&"A.DIA";  COMMENT SAY("reading from "& SS ↓ );
FLAG←0;	FILIN(SS);	I←FLAG;
IF I≠0 THEN  SAY(SS& " doesnt exist" ↓ )
	ELSE BEGIN SAY("del "&SS ↓ ); IDUM←0;  RENAME(INCH,NULL,0,IDUM);
	IF IDUM THEN SAY("DELETE FAILED!!" ↓ );  END;
RELEASE(INCH);

SAY("thru "&CVS(J) ↓ );

END "READDIA" ;

IF W≠J THEN J←J-1;  COMMENT DIDN'T REALLY GET THRU JTH FILE;
FILOUT("DEL.FIL");  OUT(OUCH,CVS(J) ↓ );  RELEASE(OUCH);
SAY("thru P" & CVS(J) ↓ );
SAY("done with deleting DIA files" ↓ );

END "DEL";


END "D" ;

COMMENT  P ROUTINE FOR FOR GOING THRU DIA FILES;

IF EQU(S,"P") THEN BEGIN "P"

SAY("Here we go thru DIA files on FAUGHT " ↓ );
FILIN("PAR2.FIL");
SS←INPUT(INCH,1);  IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
I←CVD(SS); RELEASE(INCH);
SAY("top number = " & CVS(I) ↓ );
FILIN("THRU.FIL");
SS←INPUT(INCH,1);  IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
J←CVD(SS); RELEASE(INCH);
SAY("bottom number = " & CVS(J) ↓ );
SS←ASK("Want to quit?");  IF EQU(SS,"Y") THEN DONE "TOPBLOCK";

FILIN("OUT.FIL");
SS←INPUT(INCH,1);  IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
K←CVD(SS);  RELEASE(INCH);
FILOUT("OUT.FIL");  OUT(OUCH,CVS(K+1) ↓ );  RELEASE(OUCH);

SS←"S" & CVS(K) & ".OUT"; SAY("writing out on "&SS ↓ );  FILOUT(SS);

WHILE (J+1)≠I DO  BEGIN "READDIA"

J←J+1;

SS←"P"&CVS(J)&".DIA"; FILIN(SS);
IF FLAG≠0 THEN BEGIN SAY(SS& " doesnt exist" ↓ ); CONTINUE "READDIA";  END;
SSS←INPUT(INCH,1); SSS←SSS[1 TO 2];  I1←CVD(SSS);
RELEASE(INCH);

ST←"P"&CVS(J)&"A.DIA"; FILIN(ST);
IF FLAG≠0 THEN BEGIN SAY(ST& " doesnt exist" ↓ ); CONTINUE "READDIA";  END;
SSS←INPUT(INCH,1); SSS←SSS[1 TO 2];  J1←CVD(SSS);
RELEASE(INCH);
IF I1<J1 THEN SS←ST;  COMMENT TAKE THE SECOND FILE IF THEY ARE NOT EQUAL;

SAY("reading from "& SS ↓ ); FILIN(SS);
IF FLAG≠0 THEN BEGIN SAY(SS& " doesnt exist" ↓ ); CONTINUE "READDIA";  END;
SS←INPUT(INCH,1);  ST←NULL;


WHILE ¬EOF DO BEGIN "READFILE"

SV←ST;  ST←SU←NULL;
WHILE ¬EOF AND EQS(SS) DO SS←INPUT(INCH,1);
WHILE ¬EOF AND  ¬EQS(SS) AND EQU(ST,NULL) DO 
	BEGIN ST←SU; SU←SS; SS←INPUT(INCH,1); END;
COMMENT NOW HAVE INPUT IN ST, OUTPUT IN SU, PREVIOUS INPUT IN SV;

SAY(ST ↓ );  S1←ST; S←NULL;
SAY(SU ↓ ↓ );

IF EQU(ST,NULL) OR EQU(ST[1 TO 2],"PD")  OR EQU(ST[1 TO 3],"%PD")
 THEN SAY("ignore this " ↓ )
  ELSE  S←ASK("---? ");
IF EQU(S,NULL) THEN CONTINUE "READFILE";
IF EQU(S,"H") OR EQU(S,"?") THEN 
  BEGIN SAY("Copy, Enter sentence, Previous sent, Done with Dialog, Xit" ↓ );
	 S←ASK("do what?"); END;

IF EQU(S,"X") THEN DONE "READDIA";
IF EQU(S,"D") THEN DONE "READFILE";
IF EQU(S,"E") THEN S1←ASK("type in the new sentence ");
IF EQU(S,"O") THEN S1←SV;
IF EQU(S,"P") THEN S1←SV;
IF EQU(S,"E") OR EQU(S,"P") OR EQU(S,"C") OR EQU(S,"V") OR EQU(S,"O") THEN 
	OUT(OUCH, S1 ↓ ); 

END "READFILE" ;

SAY("thru "&CVS(J) ↓ );	 RELEASE(INCH);

END "READDIA" ;

IF I≠(J+1) THEN J←J-1;  COMMENT DIDN'T REALLY GET THRU JTH FILE;
RELEASE(OUCH);
FILOUT("THRU.FIL");  OUT(OUCH,CVS(J) ↓ );  RELEASE(OUCH);
SAY("thru P" & CVS(J) ↓ );
SAY("done with DIA files" ↓ );

END "P" ;

COMMENT  T ROUTINE FOR TESTING THINGS;

IF EQU(S,"T") THEN BEGIN



END;  COMMENT END OF S=T;


END "TOPBLOCK" ;  COMMENT END TO INFINITE LOOP;

    	COMMENT END OF PROGRAM;
END;